package org.inspiration.dudu.user.service;

import org.inspiration.dudu.user.model.dto.UserLikeDTO;
import org.inspiration.dudu.user.model.entity.UserLikeEntity;
import org.inspiration.dudu.user.model.vo.UserLikeVO;

import java.util.List;

/**
 * 用户点赞服务接口
 */
public interface UserLikeService {
    /**
     * 创建用户点赞
     * 
     * @param userLikeDTO 用户点赞数据传输对象
     */
    void createUserLike(UserLikeDTO userLikeDTO);

    /**
     * 删除用户点赞
     * 
     * @param userLikeDTO 用户点赞数据传输对象
     */
    void deleteUserLike(UserLikeDTO userLikeDTO);

    /**
     * 将用户点赞数据传输对象转换为实体
     * 
     * @param userLikeDTO 用户点赞数据传输对象
     * @return 用户点赞实体
     */
    UserLikeEntity transToEntity(UserLikeDTO userLikeDTO);

    /**
     * 将用户点赞实体转换为视图对象
     * 
     * @param userLikeEntity 用户点赞实体
     * @return 用户点赞视图对象
     */
    UserLikeVO transToVO(UserLikeEntity userLikeEntity);

    /**
     * 检查用户是否已点赞
     * 
     * @param userId 用户ID
     * @param contentId 内容ID
     * @return 是否已点赞
     */
    Boolean isLiked(Long userId, String contentId);


    /**
     * 将点赞标记为已读
     */
    void markAsRead(UserLikeDTO userLikeDTO);

    /**
     * 获取用户最近的点赞记录
     * 
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 用户最近的点赞实体列表
     */
    List<UserLikeEntity> getLikesByUserIdOrderByDESC(Long userId, Integer pageNum, Integer pageSize);


    UserLikeEntity getUserLike(UserLikeDTO userLikeDTO);

    List<UserLikeEntity> getUserLikesByTargetUserIdOrderByDESC(Long userId, Integer pageNum, Integer pageSize);

}
